#文件读取功能，抽象类。为什么是抽象类，因为我是两份文件，定义抽象类，让对应的子类去完成读取
import json

from 练习.shujvfen.data_define import Record


class FileReader:#抽象类，顶层设计

    def read_data(self)->list[Record]:
        '''读取文件的内容的方法，读到的每一天数据，转化成Record 对象，封装成list类返回即可'''
    pass




class TextFileReader(FileReader):

    def __init__(self,path):
        self.path=path#定义path，文件的路径
#复写（）抽象类的方法
    def read_data(self)->list[Record]:
        f = open(self.path, 'r', encoding='utf-8')

        record_list = []
        for line in f.readlines():
            line = line.strip()
            data_list=line.split(',')
            record=Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)
        f.close()
        return record_list






class JsonFileReader(FileReader):

    def __init__(self,path):
        self.path=path

    # 复写（）抽象类的方法
    def read_data(self) -> list[Record]:
        f = open(self.path,'r', encoding='utf-8')
        record_list = []
        for line in f.readlines():
            file_dict = json.loads(line)#现在得到的就是一个字典，先读取，在进行转化
            record = Record(file_dict['date'], file_dict['order_id'], int(file_dict['money']), file_dict['province'])
            record_list.append(record)
        f.close()
        return record_list




